﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AccesoBD;
using CapaLogica.CL.UtilidadesGenerales;
using System.Data.SqlClient;

namespace CapaLogica.CL.ComentarioAporte
{
    public class ComentarioAportePersistente
    {
        private AcessoBD _acceso = new AcessoBD();

        public int insertarComentario(Cl_ComentarioAporte pComentario, int pidAporte)//parametros del grupo
        {
            Parametros[] parametros = new Parametros[3];
            String sql = @"insert into dbo.T_Comentario_Aporte(comentario, id_aporte, id_usuario)
                                values(param1, param2, param3) ";

            parametros[0] = new Parametros(pComentario.Comentario, "param1");
            parametros[1] = new Parametros(pidAporte, "param2");
            parametros[2] = new Parametros(pComentario.Idusuario, "param3");

            try
            {
               int idAporte = _acceso.executeSQLInsert(sql, parametros);

                //BITACORA
               Modulo.insertarBitacora(pComentario.Idusuario, "Creación de un nuevo comentario", idAporte, 19, 1);
                //---------------
               return idAporte;

            }
            catch (Exception)
            {
                throw new Exception("Ha habido un error al registrar el comentario.");
            }
        }


        public List<EsComentarioAporte> listarComentariosAporte(int pIdAporte)
        {
            try
            {
                String sql = @"dbo.sp_listar_comentarios_aporte";
                DateTime fechaFin = DateTime.MinValue;
                Parametros[] parametros = new Parametros[1];
                parametros[0] = new Parametros(pIdAporte, "idAporte");

                SqlDataReader reader = _acceso.execute_SP_Consulta(sql, parametros);
                List<EsComentarioAporte> comentariosAporte = new List<EsComentarioAporte>();
                EsComentarioAporte comentario;

                while (reader.Read())
                {
                    if (!reader.IsDBNull(4))
                    {
                        fechaFin = reader.GetDateTime(4);
                    }
                    comentario = new EsComentarioAporte(reader.GetInt32(0) + "", reader.GetString(1), reader.GetDateTime(2).ToShortDateString()
                                                        , reader.GetBoolean(3), fechaFin.ToShortDateString(),
                                                        reader.GetInt32(5) + "", reader.GetString(6), reader.GetString(7));

                    comentariosAporte.Add(comentario);
                }

                return comentariosAporte;
            }
            catch (Exception ex)
            {

                throw ex;
            }

        }



        public void eliminarComentarioAporte(int pIdComentario, int pIdusuario)
        {
            try
            {
                String sql = @"delete  dbo.T_Comentario_Aporte
					            where id_comentario = param1";

                Parametros[] parametros = new Parametros[1];
                parametros[0] = new Parametros(pIdComentario, "param1");

                _acceso.executeSQL(sql, parametros);

                Modulo.insertarBitacora(pIdusuario, "Eliminación del comentario de un aporte", pIdComentario, 19, 2);
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

    }
}
